#include<bits/stdc++.h>
using namespace std;
typedef long long ll; 
const int N=2e6+10,M=26;
int n,p,l[N],f[N],x[N],t[N][M]; char a[N]; 
void insert(int w){
	int u=++n,v=p; p=u; l[u]=l[v]+1; x[u]=1; 
	for(;(v && !t[v][w]);v=f[v]) t[v][w]=u; 
	if(!v) {f[u]=1; return;}//!!!
	int q=t[v][w]; 
	if(l[q]==l[v]+1){f[u]=q; return;}
	int c=++n; l[c]=l[v]+1; f[c]=f[q]; memcpy(t[c],t[q],sizeof(t[q])); 
	for(;(v && t[v][w]==q);v=f[v]) t[v][w]=c; f[u]=f[q]=c; 
}
int c[N],d[N]; ll ans; 
int main()
{
	scanf("%s",a); int m=strlen(a); n=p=1;
	for(int i=0;i<m;i++) insert(a[i]-97);
	/*for(int i=1;i<=n;i++){
		printf("l=%d f=%d x=%d\n",l[i],f[i],x[i]); 
		for(int j=0;j<M;j++) if(t[i][j]) cout<<t[i][j]<<" "; cout<<endl; 
	} */
	for(int i=1;i<=n;i++) c[l[i]]++; 
	for(int i=1;i<=n;i++) c[i]+=c[i-1];
	for(int i=1;i<=n;i++) d[c[l[i]]--]=i; 
	for(int i=n;i>=1;i--) x[f[d[i]]]+=x[d[i]]; x[1]=0; 
	for(int i=n;i>=1;i--){
		int u=d[i]; 
		if(x[u]>1) ans=max(ans,1ll*x[u]*l[u]);  
		//cout<<x[u]<<" "<<l[u]<<endl; 
	}
	cout<<ans<<endl; 
	return 0;
}
